Particular embodiments generally relate to data storage systems.
In data storage architectures, a client's data may be stored in a volume. Typically, the volume's data resides on a small percentage of drives in a storage cluster. This leads to issues of hot spots where portions of the cluster are over-utilized while other portions of the cluster are under-utilized. For example, if a client is performing a large number of accesses of data in the volume, the load attributed to the small percentage of drives in which the data is stored increases resulting in a hot spot. This may result in a client experience that is inconsistent across all volumes of the cluster as some clients' may experience good performance if their data is stored on portions that are under-utilized and some clients' experience poor performance if their data is stored on over-utilized portions.
One way of attempting to provide a better client experience is using quality of service based on client prioritization. For example, clients may be assigned different priority levels. Based on these priority levels, access requests (e.g., read and write requests) for various clients are prioritized. Clients' access requests are dispatched based on the load of the cluster and a priority assigned to each client. For example, a client having a higher priority may have more access requests processed than another client having a lower priority during times when the cluster is experiencing higher load. Using the priority system only allows for a slightly better client experience. For example, priorities do not guarantee a specific, consistent level of performance and are based on the idea that the cluster is dividing its full performance amongst all clients all the time.